package com.mylife.schedule.mapper;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.mylife.schedule.vo.NowScheduleVO;
import com.mylife.schedule.vo.params.ScheduleParams;
import com.mylife.schedule.vo.ScheduleVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 计划本mapper
 * @author blueCat
 * @since 2022/3/5
 */
public interface ScheduleMapper {
    /**
     * 查询现在正在进行的计划
     * @param params
     * @return
     */
    NowScheduleVO queryNowSchedule(@Param("params") ScheduleParams params);

    /**
     * 查询全部计划类型
     * @return
     */
    List<String> queryScheduleType();

    /**
     * 添加计划
     * @param params
     * @return
     */
    int addSchedule(@Param("params") ScheduleParams params);

    /**
     * 查询计划
     * @param page
     * @param params
     * @return
     */
    List<ScheduleVo> querySchedules(Page<ScheduleVo> page, @Param("params") ScheduleParams params);

    /**
     * 删除计划
     * @param id
     * @return
     */
    Integer deleteSchedule(Integer id);

    /**
     * 修改完成状态
     * @param id
     * @param isFinish
     * @return
     */
    Integer changeFinishStatus(@Param("id") Integer id,@Param("isFinish") Integer isFinish);

    /**
     * 查询单条计划
     * @param id
     * @return
     */
    ScheduleVo queryOneSchedule(Integer id);

    /**
     * 修改计划
     * @param params
     * @return
     */
    Integer updateSchedule(@Param("params") ScheduleParams params);

    /**
     * 添加计划类型
     * @param scheduleType
     * @return
     */
    int addScheduleType(String scheduleType);

    /**
     * 统计计划内容
     * @param params
     * @return
     */
    List<ScheduleVo> queryCountSchedule(@Param("params") ScheduleParams params);

    /**
     * 查询完成时间
     * @param params
     * @return
     */
    List<ScheduleVo> queryFinishTime(@Param("params") ScheduleParams params);
}
